package cn.neusoft.servlet;

import cn.neusoft.bean.Food;
import cn.neusoft.query.BusinessQuery;
import cn.neusoft.query.FoodQuery;
import cn.neusoft.service.IFoodService;
import cn.neusoft.service.impl.FoodService;
import cn.neusoft.utils.IOUtils;
import cn.neusoft.utils.JsonUtils;
import cn.neusoft.vo.ResultBean;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/food")
public class FoodServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("---------FoodServlet-----------");
        IFoodService foodService = new FoodService();
        String what = req.getParameter("what");

        //最终响应体
        ResultBean resultBean = null;

        try {
            if ("save".equals(what)){
                System.out.println("添加或修改食品");
                String jsonStr = IOUtils.readStr(req.getInputStream());  //获取输入流字符串
                Food food = JsonUtils.jsonStrToObj(jsonStr, "yyyy-MM-dd", Food.class); //转为food对象
                if (food.getFoodId()==null){
                    resultBean = foodService.add(food);
                }else {
                    resultBean = foodService.update(food);
                }
            }else if ("del".equals(what)){
                System.out.println("删除食品");
                String id = req.getParameter("id");
                resultBean = foodService.delete(Integer.parseInt(id));
            }else if("getById".equals(what)){
                System.out.println("通过id查询食品");
                String id = req.getParameter("id");
                resultBean = foodService.getById(Integer.parseInt(id));
            }else if("page".equals(what)){
                System.out.println("分页搜索食品");
                /*
                请求体---->BusinessQuery
                {
                    pageNow：1,
                    pageCount: 5,
                    foodName: "甜甜圈"
                }
                 */
                String jsonStr = IOUtils.readStr(req.getInputStream());
                FoodQuery foodQuery = JsonUtils.jsonStrToObj(jsonStr, null, FoodQuery.class);
                resultBean = foodService.getByPage(foodQuery);
            } else if ("batchDel".equals(what)) {
                //批量删除获取
                String jsonStr = IOUtils.readStr(req.getInputStream());
                JSONArray jsonArray = JSONObject.parseArray(jsonStr);
                List<Integer> ids = jsonArray.toJavaList(Integer.class);
                System.out.println("json转集合："+ids);
                resultBean = foodService.batchDel(ids);
            } else{
                System.out.println("无服务");
                resultBean = ResultBean.ERROR("no service");
            }
        } catch (Exception e) {
            e.printStackTrace();
            resultBean = ResultBean.ERROR(e.getMessage());
        }

        //将resultBean转成json字符串响应即可
        String resultJsonStr = JSONObject.toJSONString(resultBean);
        resp.getWriter().write(resultJsonStr);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
